from flask import session, jsonify, request, g, abort, current_app

from ihome.modules.api import api_blu
from ihome.utils.common import user_login_data, file_upload
from ihome.utils.models import User
from ihome.utils.response_code import RET, error_map


@api_blu.route("/user")
def getusermsg():
    user_id = session.get("user_id")
    if user_id:
        user = User.query.get(user_id)
        return jsonify(errno=RET.OK, errmsg=error_map[RET.OK],data=user.to_dict())

@api_blu.route("/user/name",methods =["post"])
@user_login_data
def alter_user_msg():
    user = g.user
    if not user:
        return abort(4101)
    # POST 提交资料
    # 获取参数
    user_name = request.json.get("name")
    # 校验参数
    if not user_name:
        return jsonify(errno=RET.PARAMERR, errmsg=error_map[RET.PARAMERR])
    # 修改用户数据
    user.name = user_name
    # user.session.add(user)
    # json返回
    return jsonify(errno=RET.OK, errmsg=error_map[RET.OK])

# 头像设置
@api_blu.route('/user/avatar', methods=['POST'])
@user_login_data
def pic_info():
    user = g.user
    if not user:
        return abort(403)
    # POST 提交资料
    # 获取参数
    avatar_file = request.files.get('avatar')
    # 获取文件数据
    try:
        file_bytes = avatar_file.read()
        # print(file_bytes)
    except BaseException as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg=error_map[RET.PARAMERR])

    # 上传文件到七牛云服务器  一般会将文件单独管理起来  业务服务器  文件服务器
    try:
        file_name = file_upload(file_bytes)
        print(file_name)
    except BaseException as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg=error_map[RET.THIRDERR])

    # 修改头像链接
    user.avatar_url = file_name
    # json返回  必须返回头像链接
    return jsonify(errno=RET.OK, errmsg=error_map[RET.OK], data=user.to_dict())

# 获取用户实名信息
@api_blu.route('/user/auth',methods=["GET","POST"])
@user_login_data
def auth():
    # 登陆判断
    user = g.user
    if not user:
        return abort(403)
    user_id= user.id
    print(user_id)

    # 设置用户实名信息
    if request.method == "POST":
        # 获取数据
        # real_name 　id_card
        real_name = request.json.get("real_name")
        id_card = request.json.get("id_card")
        # 校验参数
        if not all(["real_name","id_card"]):
            return jsonify(errno=RET.PARAMERR, errmsg=error_map[RET.PARAMERR])

        user.real_name = real_name
        user.id_card = id_card
        # json返回
        return jsonify(errno=RET.OK, errmsg=error_map[RET.OK])

    try:

        user = User.query.filter_by(id=user_id).first()
        print(user.real_name)
    except BaseException as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg=error_map[RET.DBERR])
    return jsonify(errno=RET.OK, errmsg=error_map[RET.OK], data=user.to_auth_info())

